#if defined __WIN32__ || defined __CYGWIN__ //windows
	#ifdef __GNUC__ //gcc
		#define API_EXPORT __attribute__((dllexport))
	#else //another cc
		#define API_EXPORT __declspec(dllexport) // Note: actually gcc seems to also supports this syntax.
	#endif
#else //linux
	#if __GNUC__ >= 4 //gcc >=4
		#ifndef API_EXPORT
			#define API_EXPORT __attribute__((visibility("default")))
			#define API_HIDDEN __attribute__((visibility("hidden")))
		#endif
	#else // gcc <4
		#ifndef API_EXPORT
			#define API_EXPORT
		#endif
	#endif
#endif

#ifndef API_HIDDEN
    #define API_HIDDEN
#endif //API_HIDDEN


void f1() {
}

API_EXPORT 
void f2() {
}

API_HIDDEN 
void f3() {
}
